# Strip Pooling 带状池化

简称 SPM(条带池化模块)

来源 2020CVPR:

《Strip Pooling: Rethinking Spatial Pooling for Scene Parsing》

并且作者已经开源了其源码:

GitHub - Andrew-Qibin/SPNet: Code for our CVPR2020 paper “Strip Pooling: Rethinking Spatial Pooling for Scene Parsing”

另外主要参考的笔记:

[论文笔记] Strip Pooling(SPNet) - 知乎 (zhihu.com)

CVPR2020 - 语义分割:Strip Pooling(条纹池化) - 知乎 (zhihu.com)

CVPR2020-Strip Pooling - 优于空间池化 | Strip Pooling: Rethinking Spatial Pooling for Scene Parsing_chenzy_hust 的博客 - CSDN 博客

# SPM

这里主要介绍一下 SPM 条带池化模块的作用,以及用法:

# 介绍:

strip.png

我们先来讲一下图中的 ** 条纹池化,实际上和普通池化方法没有区别,就是把池化核(长条形区域)所对应的特征图上位置的像素值求平均。** 再来看一下整个模块,输入一个特征图,这里实际上为 C×H×W,为了方便讲解图中只画了一个通道。我们也以一个通道为例。C 个通道的特征图输入处理原理与这里一模一样。输入的特征图经过水平和数值条纹池化后变为 H×1 和 1×W。随后经过卷积核为 3 的 1D 卷积与 expand 后再对应相同位置求和得到 H×W 的特征图。之后通过 1×1 的卷积与 sigmoid 处理后与原输入图对应像素相乘得到了输出结果。

此外,得益于 elementwise 乘法操作,该 SPM 也可以被视为一种注意机制。

# 作用:

与全局平均池化相比,条纹池化考虑的是较长但较窄的范围,而不是整个特征图,避免了在相距较远的位置之间建立不必要的连接。

与需要大量计算来建立每对位置之间关系的基于注意力的模块(no-local )相比,SPM 是轻量级的,可以很容易地嵌入到任何构建块中,从而提高捕获远程空间依赖关系和利用通道间依赖项的能力。

# MPM

此外,作者提出了一种新的附加组件块,称为混合池模块 (MPM),以进一步在高语义级别上建模长期依赖关系。它通过利用具有不同内核形状的池化操作来探测具有复杂场景的图像,从而收集有用的上下文信息。之前的研究结果表明,金字塔池模型 (pyramid pooling module, PPM) 是增强语义分割网络的有效方法。然而,PPM 严重依赖于标准的池化操作 (尽管不同的池内核位于不同的金字塔级别)。考虑到标准池化和条纹池化的优点,作者改进了 PPM,提出了混合池模块 (MPM),它侧重于通过各种池化操作聚合不同类型的上下文信息,以使特征表示更有辨别力。

image-20211129191916932

​ 图 3 MPM

MPM 由两个子模块组成,同时捕获不同位置之间的短距离和长距离的以来关系,作者发现两个子模块对语义分割网络都是必不可少的。对于长距离依赖关系,作者采用 SPM 条带池化操作来捕获此类关系。简化图见图 3 (b)。条纹池化使得在整个场景中离散分布的区域之间的连接和带状结构的编码区域之间的连接成为可能。然而,对于语义区域分布紧密的情况,标准池化对于捕获局部上下文信息也是必要的。虑到这一点,如图 3 (a) 所示,我们采用了一个轻量级的金字塔池子模块来进行短距离依赖关系收集。它有两个标准池化层和一个用于多尺度特征提取的卷积层。所有三个子路径然后通过求和组合在一起。

根据 CVPR2020-Strip Pooling - 优于空间池化 | Strip Pooling: Rethinking Spatial Pooling for Scene Parsing_chenzy_hust 的博客 - CSDN 博客对应的代码,进行理解 MPM 过程。

Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

kwshh WeChat Pay

WeChat Pay

kwshh Alipay

Alipay

kwshh PayPal

PayPal